package com.gson.util;

import java.io.InputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.codehaus.xfire.client.Client;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import com.gson.model.ChResultInfo;
import com.gson.model.DetailInfo;
import com.gson.model.DetailResultInfo;
import com.gson.model.OrgInfo;

public class So114Util {

	public static String resultToXml(ChResultInfo result) throws Exception {
		StringBuffer sb = new StringBuffer();
		if (result== null) {
			throw new Exception("搜索引擎返回结果为空");
		}
		sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
		sb.append("<SearchResult>");
		sb.append("<SearchTime>").append(result.getSearchTime()).append("</SearchTime>");
		sb.append("<ResultCount>").append(result.getResultCount()).append("</ResultCount>");
		List<OrgInfo> infoList = result.getOrgList();
		if (infoList != null && infoList.size()>0) {
			sb.append("<Bizs>");
			
			for (int i = 0; i < infoList.size(); i++) {
				sb.append("<Biz>");
				OrgInfo info = new OrgInfo();
				info = infoList.get(i);
				// 产品序列号
				sb.append("<ChId>").append(StringUtil.filter(info.getChId())).append("</ChId>");
				// 政企id
				sb.append("<OrgId>").append(StringUtil.filter(info.getOrgId())).append("</OrgId>");
				// 客户id
				sb.append("<CustomerID>").append(StringUtil.filter(info.getCustomerID())).append("</CustomerID>");
				// 客户名称
				sb.append("<CustomerName>").append(StringUtil.filter(info.getCustomerName())).append("</CustomerName>");
				// 客户电话
				sb.append("<CustTelephone>").append(StringUtil.filter(info.getCustTelephone())).append("</CustTelephone>");
				// 客户地址
				sb.append("<Address>").append(StringUtil.filter(info.getAddress())).append("</Address>");
				// 地区代码
				sb.append("<RegionCode>").append(StringUtil.filter(info.getRegionCode())).append("</RegionCode>");
				// 地区中文
				sb.append("<ProvinceAndCity>").append(StringUtil.filter(info.getProvinceAndCity())).append("</ProvinceAndCity>");
				// 搜索标签
				sb.append("<SearchLabel>").append(StringUtil.filter(info.getSearchLabel())).append("</SearchLabel>");
				// X 坐标
				sb.append("<Gpsx>").append(StringUtil.filter(info.getGpsx())).append("</Gpsx>");
				// Y 坐标
				sb.append("<Gpsy>").append(StringUtil.filter(info.getGpsy())).append("</Gpsy>");
				// 距离中心
				sb.append("<Length>").append(StringUtil.filter(info.getLength())).append("</Length>");
				// 所有集团业务
				sb.append("<IsYeWu>").append(StringUtil.filter(info.getIsYeWu())).append("</IsYeWu>");
				// 规格id
				sb.append("<ProductSpecID>").append(StringUtil.filter(info.getProductSpecID())).append("</ProductSpecID>");
				// 企业名片
				sb.append("<IsQymp>").append(StringUtil.filter(info.getIsQymp())).append("</IsQymp>");
				sb.append("</Biz>");
			}
			sb.append("</Bizs>");
		}

		sb.append("</SearchResult>");
		return sb.toString();
	}
	
	public static String resultToXml(ChResultInfo result, String searchType) throws Exception {
		StringBuffer sb = new StringBuffer();
		if (result== null) {
			throw new Exception("搜索引擎返回结果为空");
		}
		
		sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
		sb.append("<SearchResult>");
		sb.append("<SearchTime>").append(result.getSearchTime()).append("</SearchTime>");
		sb.append("<ResultCount>").append(result.getResultCount()).append("</ResultCount>");
		sb.append("<ResultType>").append(searchType).append("</ResultType>");
		List<OrgInfo> infoList = result.getOrgList();
		
		if (infoList != null && infoList.size()>0) {
			sb.append("<Bizs>");
			
			for (int i = 0; i < infoList.size(); i++) {
				sb.append("<Biz>");
				OrgInfo info = new OrgInfo();
				info = infoList.get(i);
				// 产品序列号
				sb.append("<ChId>").append(StringUtil.filter(info.getChId())).append("</ChId>");
				// 政企id
				sb.append("<OrgId>").append(StringUtil.filter(info.getOrgId())).append("</OrgId>");
				// 客户id
				sb.append("<CustomerID>").append(StringUtil.filter(info.getCustomerID())).append("</CustomerID>");
				// 客户名称
				sb.append("<CustomerName>").append(StringUtil.filter(info.getCustomerName())).append("</CustomerName>");
				// 客户电话
				sb.append("<CustTelephone>").append(StringUtil.filter(info.getCustTelephone())).append("</CustTelephone>");
				// 客户地址
				sb.append("<Address>").append(StringUtil.filter(info.getAddress())).append("</Address>");
				// 地区代码
				sb.append("<RegionCode>").append(StringUtil.filter(info.getRegionCode())).append("</RegionCode>");
				// 地区中文
				sb.append("<ProvinceAndCity>").append(StringUtil.filter(info.getProvinceAndCity())).append("</ProvinceAndCity>");
				// 搜索标签
				sb.append("<SearchLabel>").append(StringUtil.filter(info.getSearchLabel())).append("</SearchLabel>");
				// X 坐标
				sb.append("<Gpsx>").append(StringUtil.filter(info.getGpsx())).append("</Gpsx>");
				// Y 坐标
				sb.append("<Gpsy>").append(StringUtil.filter(info.getGpsy())).append("</Gpsy>");
				// 距离中心
				sb.append("<Length>").append(StringUtil.filter(info.getLength())).append("</Length>");
				// 所有集团业务
				sb.append("<IsYeWu>").append(StringUtil.filter(info.getIsYeWu())).append("</IsYeWu>");
				// 规格id
				sb.append("<ProductSpecID>").append(StringUtil.filter(info.getProductSpecID())).append("</ProductSpecID>");
				// 企业名片
				sb.append("<IsQymp>").append(StringUtil.filter(info.getIsQymp())).append("</IsQymp>");
				//V认证
				sb.append("<IsV>").append(StringUtil.filter(info.getIsV())).append("</IsV>");
				//连锁
				sb.append("<IsLinkage>").append(StringUtil.filter(info.getIsLinkage())).append("</IsLinkage>");
				sb.append("</Biz>");
			}
			sb.append("</Bizs>");
		}

		sb.append("</SearchResult>");
		return sb.toString();
	}
	
	public static String detailToXml(DetailResultInfo resultInfo) throws Exception {
		StringBuffer sb = new StringBuffer("");
		if (resultInfo== null) {
			throw new Exception("详情为空");
		}
		
		sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
		if(resultInfo!=null && !StringUtil.testParam(resultInfo.getReason())) {
			DetailInfo info = resultInfo.getDetailInfo();
			sb.append("<Detail>");
			if(info!=null){
				sb.append(getDetailInfo(info));
			}
		}else{
			sb.append("<resultCount>0</resultCount>");
		}
		sb.append("</Detail>");
		return sb.toString();
	}
	
	public static String getDetailInfo(DetailInfo info){
		StringBuffer sb = new StringBuffer("");
		
		Map urlMap = So114Util.getUrlWsdl("ch_inter.xml");
		String imageHead = (String) urlMap.get("imageHead");
		
		// 缩略图路径
		if(StringUtil.testParam(info.getImagePath())){
			sb.append("<imagePath>").append(imageHead + info.getImagePath()).append("</imagePath>");	
		} else {
			sb.append("<imagePath>").append(StringUtil.filter(info.getImagePath())).append("</imagePath>");	
		}
		
		StringBuffer sbf = new StringBuffer("");
		
		// 简介
		if(StringUtil.testParam(info.getOrgCode())){
			sbf.append("<strong>企业介绍：</strong>").append(info.getOrgCode()).append("<br />");
		}
		// 营业时间
		if(StringUtil.testParam(info.getBusinessHours())){
			sbf.append("<strong>营业时间：</strong>").append(info.getBusinessHours()).append("<br />");
		}
		// 招牌菜
		if(StringUtil.testParam(info.getSignatureDishes())){
			sbf.append("<strong>招牌菜：</strong>").append(info.getSignatureDishes()).append("<br />");
		}
		// 包间数
		if(StringUtil.testParam(info.getTotalRoom())){
			sbf.append("<strong>包间数：</strong>").append(info.getTotalRoom()).append("<br />");
		}
		// 停车位
		if(StringUtil.testParam(info.getParkingNumber())){
			sbf.append("<strong>停车位：</strong>").append(info.getParkingNumber()).append("<br />");
		}
		// 消费信息
		if(StringUtil.testParam(info.getConsumerInfo())){
			sbf.append("<strong>消费信息：</strong>").append(info.getConsumerInfo()).append("<br />");
		}	
		// 菜系
		if(StringUtil.testParam(info.getCuisine())){
			sbf.append("<strong>菜系：</strong>").append(info.getCuisine()).append("<br />");
		}
		// 用餐类型
		if(StringUtil.testParam(info.getRestaurantKind())){
			sbf.append("<strong>用餐类型：</strong>").append(info.getRestaurantKind()).append("<br />");
		}
		// 外送服务
		if(StringUtil.testParam(info.getTakeawayService())){
			sbf.append("<strong>外送服务：</strong>").append(info.getTakeawayService()).append("<br />");
		}
		// 场馆收费
		if(StringUtil.testParam(info.getRentingFee())){
			sbf.append("<strong>场馆收费：</strong>").append(info.getRentingFee()).append("<br />");
		}
		// 商圈/商业街
		if(StringUtil.testParam(info.getDistrictProperty())){
			sbf.append("<strong>商圈：</strong>").append(info.getDistrictProperty()).append("<br />");
		}
		// 名点
		if(StringUtil.testParam(info.getFamousSnack())){
			sbf.append("<strong>名点：</strong>").append(info.getFamousSnack()).append("<br />");
		}
		// 服务项目
		if(StringUtil.testParam(info.getServiceItem())){
			sbf.append("<strong>服务项目：</strong>").append(info.getServiceItem()).append("<br />");
		}
		// 旅行社等级
		if(StringUtil.testParam(info.getAgencyGrade())){
			sbf.append("<strong>旅行社等级：</strong>").append(info.getAgencyGrade()).append("<br />");
		}
		// 旅游线路区域
		if(StringUtil.testParam(info.getLineArea())){
			sbf.append("<strong>旅游线路区域：</strong>").append(info.getLineArea()).append("<br />");
		}
		// 景区名称
		if(StringUtil.testParam(info.getViewName())){
			sbf.append("<strong>景区名称：</strong>").append(info.getViewName()).append("<br />");
		}
		// 景区等级
		if(StringUtil.testParam(info.getViewGrade())){
			sbf.append("<strong>景区等级：</strong>").append(info.getViewGrade()).append("<br />");
		}
		// 景区交通路线
		if(StringUtil.testParam(info.getViewLine())){
			sbf.append("<strong>景区交通路线：</strong>").append(info.getViewLine()).append("<br />");
		}
		// 挂牌星级
		if(StringUtil.testParam(info.getHotelGrade())){
			sbf.append("<strong>挂牌星级：</strong>").append(info.getHotelGrade()).append("<br />");
		}
		// 医院等级
		if(StringUtil.testParam(info.getHospitalGrade())){
			sbf.append("<strong>医院等级：</strong>").append(info.getHospitalGrade()).append("<br />");
		}
		// 特色医疗
		if(StringUtil.testParam(info.getMedicalFeature())){
			sbf.append("<strong>特色医疗：</strong>").append(info.getMedicalFeature()).append("<br />");
		}
		// 汽车品牌
		if(StringUtil.testParam(info.getCarBrand())){
			sbf.append("<strong>汽车品牌：</strong>").append(info.getCarBrand()).append("<br />");
		}
		// 学校评级
		if(StringUtil.testParam(info.getSchoolGrade())){
			sbf.append("<strong>学校评级：</strong>").append(info.getSchoolGrade()).append("<br />");
		}
		// 学校性质
		if(StringUtil.testParam(info.getSchoolKind())){
			sbf.append("<strong>学校性质：</strong>").append(info.getSchoolKind()).append("<br />");
		}
		// 招生咨询电话
		if(StringUtil.testParam(info.getRecruitTel())){
			sbf.append("<strong>招生咨询电话：</strong>").append(info.getRecruitTel()).append("<br />");
		}
		// 咨询热线
		if(StringUtil.testParam(info.getConsultationHotline())){
			sbf.append("<strong>咨询热线：</strong>").append(info.getConsultationHotline()).append("<br />");
		}
		// 医院性质
		if(StringUtil.testParam(info.getHospitalQuality())){
			sbf.append("<strong>医院性质：</strong>").append(info.getHospitalQuality()).append("<br />");
		}
		// 服务热线
		if(StringUtil.testParam(info.getServiceHotline())){
			sbf.append("<strong>服务热线：</strong>").append(info.getServiceHotline()).append("<br />");
		}
		// 客容量
		if(StringUtil.testParam(info.getCustomerCapacity())){
			sbf.append("<strong>客容量：</strong>").append(info.getCustomerCapacity()).append("<br />");
		}
		// 商品种类
		if(StringUtil.testParam(info.getCommodityKind())){
			sbf.append("<strong>商品种类：</strong>").append(info.getCommodityKind()).append("<br />");
		}
		// 楼层介绍
		if(StringUtil.testParam(info.getFloorIntro())){
			sbf.append("<strong>楼层介绍：</strong>").append(info.getFloorIntro()).append("<br />");
		}
		// 支付方式
		if(StringUtil.testParam(info.getPayMode())){
			sbf.append("<strong>支付方式：</strong>").append(info.getPayMode()).append("<br />");
		}
		// 特产商品
		if(StringUtil.testParam(info.getSpecialProduct())){
			sbf.append("<strong>特产商品：</strong>").append(info.getSpecialProduct()).append("<br />");
		}
		// 名品
		if(StringUtil.testParam(info.getFamousProduct())){
			sbf.append("<strong>名品：</strong>").append(info.getFamousProduct()).append("<br />");
		}
		// 订票服务
		if(StringUtil.testParam(info.getTicketBookingService())){
			sbf.append("<strong>订票服务：</strong>").append(info.getTicketBookingService()).append("<br />");
		}
		// 距离火车站
		if(StringUtil.testParam(info.getTrainDistance())){
			sbf.append("<strong>距离火车站：</strong>").append(info.getTrainDistance()).append("<br />");
		}
		// 距离机场
		if(StringUtil.testParam(info.getPlaneDistance())){
			sbf.append("<strong>距离机场：</strong>").append(info.getPlaneDistance()).append("<br />");
		}
		// 距离长途汽车站
		if(StringUtil.testParam(info.getCoachDistance())){
			sbf.append("<strong>距离长途汽车站：</strong>").append(info.getCoachDistance()).append("<br />");
		}
		// 学历种类
		if(StringUtil.testParam(info.getEducationalBackground())){
			sbf.append("<strong>学历种类：</strong>").append(info.getEducationalBackground()).append("<br />");
		}
		// 服务咨询电话
		if(StringUtil.testParam(info.getServicePhone())){
			sbf.append("<strong>服务咨询电话：</strong>").append(info.getServicePhone()).append("<br />");
		}
		
		if(StringUtil.testParam(sbf.toString())) {
			// 政企详情
			sb.append("<detailInfo>");
			sb.append(sbf.toString());
			sb.append("</detailInfo>");
			sb.append("<resultCount>1</resultCount>");
		} else {
			sb.append("<resultCount>0</resultCount>");
		}
	
		
		return sb.toString();
	}
	
	public static Map getUrlWsdl(String fileName) {
		Map map = new HashMap();
		InputStream in = So114Util.class.getClassLoader().getResourceAsStream(fileName);
		Document doc = null;
		SAXReader saxReader=new SAXReader(); 
		try {
			doc = saxReader.read(in);
			Element rootEle = doc.getRootElement();
			Iterator rootIter = rootEle.elementIterator("service");
			while (rootIter.hasNext()) {
				Element itemEle = (Element) rootIter.next();
				String name = itemEle.elementTextTrim("name");
				String url = itemEle.elementTextTrim("url");
				map.put(name, url);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return map;
	}
}
